package com.shrct.businessprocess.customerservice;

import com.shrct.businessprocess.customerservice.RCBorrowReplacementRMAInfo;
import com.shrct.businessprocess.customerservice.RCChildrenReplacementRMAInfo;
import com.shrct.businessprocess.customerservice.RCFaultReport;
import com.shrct.businessprocess.customerservice.RCFaultReportRMAInfo;
import com.shrct.businessprocess.customerservice.RCNormalReplacementRMAInfo;
import com.shrct.businessprocess.customerservice.impl.RCFaultReportProductImpl;
import com.shrct.businessprocess.customerservice.proxy.RCFaultReportProductProxy;
import com.shrct.businessprocess.product.RCIdentifiablePhysicalProductEntry;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import edu.fudan.mylang.pf.INamedModelObject;
import java.util.Collection;

@EntityImplementation(implementBy = RCFaultReportProductImpl.class)
public interface RCFaultReportProduct extends IModelObject, INamedModelObject {
  public abstract RCFaultReport getFaultReport();
  
  public abstract RCFaultReportProduct setFaultReport(final RCFaultReport faultReport);
  
  public abstract RCIdentifiablePhysicalProductEntry getProduct();
  
  public abstract RCFaultReportProduct setProduct(final RCIdentifiablePhysicalProductEntry product);
  
  public abstract String getComment();
  
  public abstract RCFaultReportProduct setComment(final String comment);
  
  public abstract Boolean getRequireRMA();
  
  public abstract RCFaultReportProduct setRequireRMA(final Boolean requireRMA);
  
  public abstract Collection<RCFaultReportRMAInfo> getRmaInfo();
  
  public abstract RCFaultReportProduct removeFromRmaInfo(final RCFaultReportRMAInfo rCFaultReportRMAInfo);
  
  public abstract RCFaultReportProduct removeAllRmaInfo();
  
  public abstract RCNormalReplacementRMAInfo createNormalRMAFaultReport();
  
  public abstract RCBorrowReplacementRMAInfo createBorrowRMAFaultReport();
  
  public abstract RCChildrenReplacementRMAInfo createChildrenRMAFaultReport();
  
  public abstract String getEntityName();
  
  public abstract RCFaultReportProductProxy toProxy();
}
